The well known X Windows System.TM. is software that is implemented in graphics workstations to manage device inputs (e.g., mice and keyboards) and the graphics output being sent to the screen of the workstation. The X Windows System.TM. was developed in response to a need for a windowing system that is capable of working with a variety of different types of workstations. The X Windows System.TM. utilizes a programming model known as the client-server model. In the client-server model, the windowing software running on a graphics workstation is referred to as the X Server, which performs tasks requested by applications. These applications are referred to in the X Windows System.TM. as X Clients. The X Clients use the display of the graphics workstation. The X Client may be running on the workstation comprising the X Server or, alternatively, the X Client may be running on a remote computer that is connected to the workstation through a communication link.
Information communicated between the X Server and the X Client(s) is processed and communicated via a protocol known as the X Protocol. The X Windows System.TM. also comprises a library of routines known as XLib. The manner in which the X Server sends graphics output to the screen is controlled by the X Client, which calls XLib routines which, in turn, are converted into X Protocol requests. Upon receiving the X Protocol requests, the X Server outputs the appropriate graphics output to the screen of the graphics workstation. Tool kits, such as Motif, for example, allow XLib routines to be combined into basic building blocks called widgets using an object-oriented approach. These tool kits provide a higher level of abstraction and allow the programmer to create graphics output requests that utilize the widgets. The widgets are converted into X Protocol requests that are used by the X Server to generate graphics output to be sent to the screen.
Problems or defects in the X Server may cause the X Server to generate errors in an image being rendered to the screen by the X Server. There are some tools available that test the X Server. With these tools, tests make calls to Xlib to cause rendering by the X Server. After the rendering has been performed, the tests use the Xlib API to request the image. The X server uses internal information (i.e., software data) and external information (i.e., data from the graphics device) to return the requested image. However, this image may not be what was actually displayed by the graphics hardware. By using internal data, the X Server returns what it thinks the graphics hardware displayed, which is not necessarily what was actually displayed.
Accordingly, a need exists for a method and apparatus for testing X Servers which allow tests for testing X Servers to be easily written and which ensure precise testing of the X Server and the ability to easily analyze the testing results.